home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compute! Gazette 1987 November
/
1987-11.d64
/
poster printer
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
2KB
|
83 lines
10 rem copyright 1987 compute! publications, inc. - all rights reserved
20 ifpeek(65530)=5then(NULL)15
30 poke56,59:poke55,0:clr:ch=15360:dim b(8,8):open4,4,0:gosub740
40 bh=5:bw=3:rem banner pixel height (1-10) and width (1-)
50 pw=1:rem single-page pixel width (1-2)
60 print"[147] copyright 1987 compute! pub., inc."
70 printtab(11)"all rights reserved"
80 printtab(11)"poster printer"
90 printtab(11)"1. banner"
100 printtab(11)"2. single page"
110 printtab(11)"3. form feed"
120 printtab(11)"4. exit program"
130 geta$:ifa$<"1"ora$>"4"then130
140 onasc(a$)-48goto170,410,150,160
150 print#4,chr$(12):goto60:rem form feed
160 print#4:close4:print"[147]":end
170 print"[147]please enter the message to";
180 a$="":print" be printed":inputa$:ifa$=""then60
190 lp=len(a$)
200 forc=1tolp:gosub210:next:goto60
210 x$=mid$(a$,c,1):sc=asc(x$)
220 gosub330:cs=ch+sc*8
230 fori=0to7:a(i)=peek(cs+i):next
240 forbi=7to0step-1
250 l1$=left$(" ",(80-8*bh)/2)
260 forby=7to0step-1:ifa(by)and2^bithen290
270 l1$=l1$+left$(" ",bh)
280 goto300
290 l1$=l1$+left$("**********",bh)
300 nextby
310 fora=1tobw:print#4,l1$:next
320 nextbi:return
330 ifsc<32thensc=128:return
340 ifsc<64thenreturn
350 ifsc<96thensc=sc-64:return
360 ifsc<128thensc=sc-32:return
370 ifsc<160thensc=128:return
380 ifsc<192thensc=sc-64:return
390 ifsc<255thensc=sc-128:return
400 sc=94:return
410 nc=8:ifpw=2thennc=4
420 print"[147]enter up to 5 lines with"nc"letters or"
430 print"less per line (carriage return to quit)"
440 fora=1to5:l1$="":print"enter line";a:inputl1$
450 ifa=1andl1$=""thena=5:next:goto60
460 ifl1$=""thena=5:next:goto480
470 l=a:l$(a)=left$(l1$,nc):next
480 w=12*l:w1=int((60-w)/2)+5
490 forw=1tow1:print#4:next
500 forx=1tol:gosub510:next:goto60
510 ll=len(l$(x)):forx1=1toll
520 w$=mid$(l$(x),x1,1):sc=asc(w$)
530 gosub330
540 cs=ch+sc*8
550 forx2=0to7:b(x1,x2)=peek(cs+x2)
560 nextx2,x1
570 lc=int((80-(ll*pw*8+ll*2))/2):rem ll*2 for # spaces between adjoining chars
580 pl$=""
590 iflc=0then610
600 forx1=1tolc:pl$=pl$+" ":next
610 sl$=pl$
620 forx2=0to7:forx1=1toll
630 forbi=7to0step-1
640 ifb(x1,x2)and2^bithen660
650 pl$=pl$+left$(" ",pw):goto670:rem pixel width in this line and next
660 pl$=pl$+left$("**",pw)
670 nextbi
680 pl$=pl$+" ":rem # spaces between adjoining characters
690 nextx1
700 print#4,pl$
710 pl$=sl$
720 nextx2
730 fora=1to4:print#4:next:return:rem spaces between text lines
740 i=15104:rem locate uppercase in ram
750 reada:ifa=-1thensys15104:return
760 pokei,a:i=i+1:goto750
770 rem 64 character move routine
780 data 169,208,133,252,169,60,133,254,169,0
790 data 133,251,133,253,120,165,1,41,251,133
800 data 1,162,4,160,0,177,251,145,253,200
810 data 208,249,230,252,230,254,202,208,242,165
820 data 1,9,4,133,1,88,96,-1